// 专门针对 mock 接口
import axios from "axios";
// 进度条
import NProgress from "nprogress";
import 'nprogress/nprogress.css'

// 配置通用的基础路径和超时
// service 是一个能发任意 ajax 请求的函数,当然可以作为对象使用
const service = axios.create({
  // 基础路径
  baseURL: '/mock',
  // 超时时间
  timeout: 20000
})

// 添加请求拦截器
service.interceptors.request.use(config => {
  // 显示请求进度条,在请求拦截器中
  NProgress.start()


  // 必须返回 config
  return config // 后面就会根据返回的 config,使用 xhr 对象发 ajax 请求
})

// 添加响应拦截器
service.interceptors.response.use(
  // 请求成功返回的回调
  response => {
    // 隐藏请求进度条,在响应拦截器中
    NProgress.done()
    // 成功返回的数据不再是 response, 而直接是响应体数据 response.data
    return response.data
  },
  // 请求失败返回的回调
  error => {
    // 隐藏请求进度条,在响应拦截器中
    NProgress.done()

    // 统一处理请求错误, 具体请求也可以选择处理或不处理
    alert(error.message || '未知的请求错误')
    // throw error
    return Promise.reject(error)
  })

// 向外暴露 service
export default service